<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>函数的返回值</title>
</head>

<body>
  <script>
    // 计算三个值的和
    // 使用return来设置函数的返回值 return 值
    // return后的值将会作为函数的执行结果返回，可以定义一个变量来接收该结果
    // 函数内部一般用来返回结果
    // return后不跟任何值返回undefined
    // 函数中不写return返回undefined
    // return后可以跟任意类型值
    // function sum(a, b, c) {
    //   // alert(a + b + c)
    //   var d = a + b + c;
    //   // return d;
    //   return 'hello'
    // }
    // 变量result的值就是函数的执行结果
    // 函数返回的什么result的值就是什么
    // var result = sum(1, 2, 3)
    // alert(result) //hello

    // 定义一个函数，判断一个数字是否是偶数，如果是返回true，否则返回false
    function isOu(number) {
      // if (number % 2 == 0) return true;
      // else return false;
      return number % 2 == 0
    }
    let ou = isOu(4);
    console.log(ou); //true

    // 定义一个函数，可以根据半径计算一个圆的面积，并返回计算结果
    function mianji(r) {
      return 3.14 * r * r
    }
    let result = mianji(10);
    console.log(result); //314

    // 创建一个函数，可以在控制台中输出一个人的信息 可以输出人的 name age gender address


    function Person(o) {
      // console.log("我是" + name + ",今年我" + age + "岁了," + "我是一个" + gender + "人" + ",我住在" + address);
      console.log("我是" + o.name + ",今年我" + o.age + "岁了," + "我是一个" + o.gender + "人" + ",我住在" + o.address);
    }
    // Person("猪八戒", 28, "高老庄", "男")//我是猪八戒,今年我28岁了,我是一个高老庄人,我住在男

    // 实参可以是任意的数据类型，也可以是一个对象
    // 当我们的参数过多时，可以将参数封装到一个对象中，然后通过对象传递
    let obj = {
      name: "孙悟空",
      age: 18,
      address: "花果山",
      gender: "男"
    };

    Person(obj);//我是孙悟空,今年我18岁了,我是一个男人,我住在花果山

    // 实参可以是一个对象，也可以是一个函数
    function fun(a) {
      console.log(a);
      // a(obj)
    }
    fun(123) //123
    // fun(Person) //function Preson(o){}
    // fun(function () { alert('hello') })

    fun(mianji(10)) //mainji()调用函数,相当于使用的函数的返回值  314
    fun(mianji) //函数对象，相当于直接使用函数对象  function manin(r){}
  </script>
</body>

</html>